//冒泡排序算法
/*第一轮  排序过程
3  2  4  1    （最初）
2  3  4  2    （比较3和2，交换）
2  3  4  1    （比较3和4，不交换）
2  3  1  4    （比较4和1，交换）
第一轮结束，最大的数字 4 已经在最后面，因此第二轮排序只需要对前面三个数进行比较。

第二轮  排序过程
2  3  1  4 （第一轮排序结果）
2  3  1  4 （比较2和3，不交换）
2  1  3  4 （比较3和1，交换）
第二轮结束，次大的数字 3 已经排在倒数第二个位置，所以第三轮只需要比较前两个元素。

第三轮  排序过程
2  1  3  4  （第二轮排序结果）
1  2  3  4  （比较2和1，交换）   
*/
#include <stdio.h>
int main()
{
    int num[10] = {4, 5, 2, 10, 7, 1, 8, 3, 6, 9};
    int i, j, temp;
    //冒泡排序算法：进行 n-1 轮比较
    for (i = 0; i < 10 - 1; i++)
    {
        //每一轮比较前 n-1-i 个，已经排序好的最后 i 个不用比较
        //对拥有 n 个元素的数组 R[n] 进行 n-1 轮比较。
        for (j = 0; j < 10 - 1 - i; j++)
        {
            if (num[j] > num[j + 1])
            {
                temp = num[j];
                num[j] = num[j + 1];
                num[j + 1] = temp;
            }
        }
    }

    //输出排序后的数组
    for (i = 0; i < 10; i++)
    {
        printf("%d ", num[i]);
    }
    printf("\n");

    return 0;
}
//整个数组从小到大排序:1 2 3 4 5 6 7 8 9 10
